之前發文如[Container]、[Install]等用中括號括起的名稱我稱之為標籤,其實正式名稱是叫Section,之後會以Section取代標籤稱乎。
話說.network其實很精要,定義個NetworkName就可以給各容器依此共同呼叫。
# file: .config/containers/systemd/a2a-net.container
[Network]
NetworkName=a2a-network
.container引用a2a-network方式:
[Container]
Network=a2a-network
而.network的Section其實還不少,大多是遇到特別情況才需要用。
[Unit] systemd dependency
[Network] Podman network 本身設定
[Service] systemd 怎麼執行 network create
[Install] 哪個target要拉起這個 network service
[Quadlet] Quadlet generator 特殊設定
其中[Unit]、[Service]與[Install]的Section,在.container檔已有說明了。
以下是講[Network]的Section內容:
| Key | 用途 | Podman 對應 |
|---|---|---|
NetworkName= |
實際 Podman network 名稱 | --name 的效果 |
Driver= |
network driver | --driver |
Subnet= |
子網 CIDR | --subnet |
Gateway= |
gateway IP | --gateway |
IPRange= |
container 可分配 IP 範圍 | --ip-range |
IPv6= |
啟用 IPv6 | --ipv6 |
Internal= |
建立 internal network | --internal |
DisableDNS= |
關閉 Podman DNS | --disable-dns |
DNSServer= |
指定 DNS server | DNS option |
Options= |
driver-specific option | --opt |
Label= |
network metadata label | --label |
NetworkDeleteOnStop= |
service stop 時刪除 network | Quadlet 特有 |
PodmanArgs= |
額外 podman network create 參數 | 原樣追加 |
ServiceName= |
自訂產生的 systemd service 名 | Quadlet 特有 |
podman network ls指令看出。Label=app=a2a
Label=environment=sit
systemctl --user stop a2a-net-network.service會刪掉a2a-net(等於podman network rm --force --ignore a2a-net),也會造成依賴a2a-net的容器強制斷網。PodmanArgs=--some-option=value,主要是給podman network create設定相關參數之用。ServiceName=a2a-net,就可以這樣用systemctl:systemctl --user status a2a-net或systemctl --user status a2a-net.service,少打"-network"。另外[Quadlet]設定如下:
[Quadlet]
DefaultDependencies=true
DefaultDependencies預設為true,可以不設。
Quadlet會自動替generated unit加一些network-online dependency。
rootless Quadlet尤其可能加:
After=podman-user-wait-network-online.service
Wants=podman-user-wait-network-online.service
除非特殊需求,毋須增加[Quadlet]這一Section。